package com.expert.miniapp.dto;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * AIMatchResponse - AI API响应结构
 *
 * 兼容AI接口返回的完整结构，忽略未声明的字段以提高兼容性。
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AIMatchResponse {

    /** 响应ID */
    private String id;

    /** 对象类型 */
    private String object;

    /** 创建时间 */
    private Long created;

    /** 模型名称 */
    private String model;

    /** 系统指纹（可选） */
    @JsonProperty("system_fingerprint")
    private String systemFingerprint;

    /** 选项列表 */
    private List<Choice> choices;

    /** Token使用情况 */
    private Usage usage;

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Choice {

        /** 选项索引 */
        private Integer index;

        /** 返回消息 */
        private Message message;

        /** 终止原因 */
        @JsonProperty("finish_reason")
        private String finishReason;
    }

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Message {

        /** 角色 */
        private String role;

        /** 消息内容（JSON数组字符串） */
        private String content;
    }

    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Usage {

        /** 提示Token数量 */
        @JsonProperty("prompt_tokens")
        private Integer promptTokens;

        /** 完成Token数量 */
        @JsonProperty("completion_tokens")
        private Integer completionTokens;

        /** 总Token数量 */
        @JsonProperty("total_tokens")
        private Integer totalTokens;
    }
}
